home *** CD-ROM | disk | FTP | other *** search
- .Model Large,Pascal
- .Code
- .386
-
- Public Project2d
-
- Proc Project2d Uses gs fs es di si,World:DWord,Screen:DWord,Num:Word
-
- Lfs si,World
- Les di,Screen
-
- Mov cx,Num
-
- @ProjectLooper:
- Push cx
-
- Mov ecx,fs:[si+8] ; Get Z coord
- Cmp ecx,0
- Jne @DivOK
-
- Mov eax,fs:[si] ; Get X coord
- Shl eax,9
- Add eax,320
- Mov ebx,fs:[si+4] ; Get Y Coord
- Shl ebx,9
- Mov ecx,200
- Sub ecx,ebx
- Jmp @StoreScreenCoord
-
- @DivOK:
-
- Mov eax,fs:[si] ; Get X Coord
- Shl eax,9
- Cdq ; Expand the sign of EAX through EDX
- IDiv ecx
- Add eax,320
- Mov ebx,eax ; Store screen X Coord
- Mov eax,fs:[si+4]
- Shl eax,9
- Cdq ; Expand the sign of EAX through EDX
- IDiv ecx
- Mov ecx,200
- Sub ecx,eax
- Mov eax,ebx
-
- @StoreScreenCoord:
-
- ;;;; eax = X screen Coord
- ;;;; ecx = Y screen Coord
-
- Mov es:[di],ax
- Mov es:[di+2],cx
-
- ;; Update offsets to point to next vertex
-
- Add di,4
- Add si,12
-
- Pop cx
- Dec cx
- Jnz @ProjectLooper
- Ret
- Endp Project2d
-
- End
-